/**
 *
 * @author Pablo Sao
 *         Erick Chali.
 *         Erick Vivas.
 *         Tony 
 *  07 de septiembre de 2012
 */
import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;

public class ChatGUI extends JFrame{
    
    private JTextArea msjReci; //Contendra los mensajes recibidos
    private JButton send,conect,dis,exit; 
    private GridBagLayout marco; // distribucion en frame
    private GridBagConstraints res; // restricciones del marco
    private JTextField msjSend,ip,user; 
    private JScrollPane scroll;
    
    public ChatGUI(){
        super("Network chat 1v1");
        marco = new GridBagLayout();
        setLayout( marco); //estableciendo el esquema del marco
        res = new GridBagConstraints();
        
        ip = new JTextField(10);
        user = new JTextField(10);
        conect = new JButton("Connect",(new ImageIcon( getClass().getResource( "connect_to_network.png" ))) );
        
        msjReci = new JTextArea(5,10);
        msjReci.setFont(new java.awt.Font("Courier New", 0, 10));
        msjReci.setEditable(false);
        scroll = new JScrollPane(msjReci);
        
        msjSend = new JTextField(10);
        send = new JButton("Send",( new ImageIcon( getClass().getResource( "mail_forward.png" ))) );
        dis = new JButton("Disconnect", (new ImageIcon( getClass().getResource( "stock_disconnect.png" ))));
        
        exit = new JButton("Exit", (new ImageIcon( getClass().getResource( "exit.png" ))));
        exit.setForeground(new java.awt.Color(190, 59, 16));
        
        /* 
         * Agrefando componentes
         * addCom(componente, fila, columna, anchura, altura );
         */
        
        //agregando componentes
        res.fill = GridBagConstraints.BOTH;
        addCom(scroll,6,1,3,1);
        
        addCom(ip, 1, 2, 2, 1 );
        addCom(user,2,2,2,1);
        addCom(conect,4, 2, 2, 1);
        addCom(msjSend,10,0,2,1);
        addCom(send,10,2,2,1);
        addCom(dis,11,1,1,1);
        addCom(exit,11,2,2,1);
        
        //Agregando mensajes
        addCom((new JLabel("IP:")), 1, 1, 2, 1);
        addCom((new JLabel("User:")),2,1,2,1);
        addCom((new JLabel("Message:")),5,1,2,1);
        
        ControlBoton control = new ControlBoton();
        conect.addActionListener(control);
        send.addActionListener(control);
        dis.addActionListener(control);
        exit.addActionListener(control);
    }
    
    // metodo para establecer restricciones 
    private void addCom( Component componente,int fila, int columna, int anchura, int altura ){
        
        res.gridx = columna; // establece gridx
        res.gridy = fila; // establece gridy
        res.gridwidth = anchura; // establece gridwidth
        res.gridheight = altura; // establece gridheight
        marco.setConstraints( componente, res); // establece restricciones
        add( componente ); // agrega el componente
    }
    
    private class ControlBoton implements ActionListener{
		
	public void actionPerformed( ActionEvent event ){
            
            if(event.getActionCommand().equals("Conect")){
                //colocar el metodo conectar
            }
            else if(event.getActionCommand().equals("Send")){
                //Colocar el metodo de envio de mensaje
            }
            else if(event.getActionCommand().equals("Disconnect")){
                //Colocar el metodo para desconectar
                JOptionPane.showMessageDialog(null, "Desconectado", "Network chat 1v1",
                                              JOptionPane.INFORMATION_MESSAGE);
            }
            else if(event.getActionCommand().equals("Exit")){
                //Colocar el metodo para desconectar
                System.exit(0);
               
            }
        }
    }
    
}
